Hacer que un iframe se ajuste a la altura de una ventana con Javascript
| Nota: Recordamos que un iframe es un frame que se puede insertar en el cuerpo de una página, asignando una altura y una anchura. Podemos ver una explicación detallada enhttp://www.desarrolloweb.com/articulos/667.php |

Imaginemos una definición de 800 x 600. Entonces el espacio para el iframe será el tamaño útil donde se visualiza la página, menos el espacio reservado para la cabecera. Ahora, por ejemplo en una definición de 1280 x768, como el espacio útil para la página es mayor, el espacio en el que quiero que se vea mi iframe también será mayor. Sigue siendo el tamaño útil donde se visualiza la página, menos el espacio reservado para la cabecera, pero como ahora el espacio útil es mayor, el iframe también tiene que presentarse con mayor tamaño.
La solución pasa por utilizar un Javascript para calcular el espacio útil de la página y restarle el espacio de la cabecera. Entonces tendremos la dimensión altura que tiene que tener el iframe.
Para calcular este dato tenemos que tener en cuenta que Internet Explorer y Firefox tienen modos distintos. Es decir, la propiedad espacio útil de la página es distinta en estos dos browser, por lo que el script se puede complicar un poco.
En Internet Explorer: el espacio útil se calcula con la propiedad document.body.clientHeight.
En Mozilla Firefox: el espacio útil nos lo devuelve la propiedad window.innerHeight
Con este script podemos calcular el tamaño que debemos reservarle al iframe:
if (window.innerHeight){
//navegadores basados en mozilla
espacio_iframe = window.innerHeight – 110
}else{
if (document.body.clientHeight){
//Navegadores basados en IExplorer, es que no tengo innerheight
espacio_iframe = document.body.clientHeight – 110
}else{
//otros navegadores
espacio_iframe = 478
}
}
document.write (‘<iframe frameborder=»0″ src=»mipagina.html» width=»770″ height=»‘ + espacio_iframe + ‘»>’)
document.write (‘</iframe>’)
¿Y qué pasaría si los navegadores no entienden Javascript, o está deshabilitado?
En ese caso nos conviene utilizar la etiqueta noscript, para mostrar un iframe con los valores por defecto (noscript sólo se tiene en cuenta si no hay soporte para javascript):
<noscript>
<iframe frameborder=»0″ src=»mipagina.html» width=»770″ height=478>
</iframe>
</noscript>
El código completo sería el siguiente:
<script>
if (window.innerHeight){
//navegadores basados en mozilla
espacio_iframe = window.innerHeight – 110
}else{
if (document.body.clientHeight){
//Navegadores basados en IExplorer, es que no tengo innerheight
espacio_iframe = document.body.clientHeight – 110
}else{
//otros navegadores
espacio_iframe = 478
}
}
document.write (‘<iframe frameborder=»0″ src=»mipagina.html» width=»770″ height=»‘ + espacio_iframe + ‘»>’)
document.write (‘</iframe>’)
</script>
<noscript>
<iframe frameborder=»0″ src=»mipagina.html» width=»770″ height=478>
</iframe>
</noscript>

